package com.aco.fatureapp.activity;

import roboguice.inject.ContentView;
import roboguice.inject.InjectView;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;

import com.aco.fatureapp.R;
import com.aco.fatureapp.model.Help;
import com.aco.fatureapp.service.SrvMetering;

@ContentView(R.layout.activity_leitura_menor)
public class ConfirmLessMeteringActivity extends BaseActivity {

	public static final String VALUE_RETURN = "ConfirmLessMeteringActivity.valueReturn";

	@InjectView(R.id.ckOcorrencia51)
	private CheckBox mCkOcorrencia51;

	@InjectView(R.id.ckOcorrencia52)
	private CheckBox mCkOcorrencia52;

	@InjectView(R.id.ckOcorrencia53)
	private CheckBox mCkOcorrencia53;

	@InjectView(R.id.ckOcorrencia54)
	private CheckBox mCkOcorrencia54;

	@InjectView(R.id.btnSearchCon)
	private Button mBtnOk;

	@InjectView(R.id.btnCancelCon)
	private Button mBtnCancel;

	private Long mCodOcorrencia = null;

	@Override
	protected void onCreate(final Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		/**
		 * Registrando Eventos
		 */
		mBtnOk.setOnClickListener(preencherFiltroPesquisa());

		mBtnCancel.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(final View v) {
				finish();
			}
		});

		mCkOcorrencia51.setOnCheckedChangeListener(changeOcorrencia());
		mCkOcorrencia52.setOnCheckedChangeListener(changeOcorrencia());
		mCkOcorrencia53.setOnCheckedChangeListener(changeOcorrencia());
		mCkOcorrencia54.setOnCheckedChangeListener(changeOcorrencia());
	}

	/**
	 *
	 * @return
	 */
	private OnCheckedChangeListener changeOcorrencia() {
		return new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {

				if (buttonView.getId() == mCkOcorrencia51.getId()) {
					mCkOcorrencia52.setChecked(false);
					mCkOcorrencia53.setChecked(false);
					mCkOcorrencia54.setChecked(false);
					mCkOcorrencia51.setChecked(isChecked);

					mCodOcorrencia = 51L;
				}
				else if (buttonView.getId() == mCkOcorrencia52.getId()) {
					mCkOcorrencia51.setChecked(false);
					mCkOcorrencia53.setChecked(false);
					mCkOcorrencia54.setChecked(false);
					mCkOcorrencia52.setChecked(isChecked);

					mCodOcorrencia = 52L;
				}
				else if (buttonView.getId() == mCkOcorrencia53.getId()) {
					mCkOcorrencia52.setChecked(false);
					mCkOcorrencia51.setChecked(false);
					mCkOcorrencia54.setChecked(false);
					mCkOcorrencia53.setChecked(isChecked);

					mCodOcorrencia = 53L;
				}
				else if (buttonView.getId() == mCkOcorrencia54.getId()) {
					mCkOcorrencia52.setChecked(false);
					mCkOcorrencia53.setChecked(false);
					mCkOcorrencia51.setChecked(false);
					mCkOcorrencia54.setChecked(isChecked);

					mCodOcorrencia = 54L;
				}
			}
		};
	}

	private OnClickListener preencherFiltroPesquisa() {
		return new OnClickListener() {

			@Override
			public void onClick(final View v) {

				// Todos estiverem desmarcados zerar o código da ocorrência.
				if (!mCkOcorrencia51.isChecked()
						&& !mCkOcorrencia52.isChecked()
						&& !mCkOcorrencia53.isChecked()
						&& !mCkOcorrencia54.isChecked()) {
					mCodOcorrencia = null;
				}

				if (mCodOcorrencia != null) {
					Help ocorrencia = new SrvMetering()
							.getOcorrencia(mCodOcorrencia);

					setResult(RESULT_OK,
							getIntent().putExtra(VALUE_RETURN, ocorrencia));
					finish();
				}
				else {
					Toast.makeText(
							ConfirmLessMeteringActivity.this,
							"Pelo ou menos uma ocorrência deverá ser informada!",
							Toast.LENGTH_LONG).show();
				}
			}
		};
	}

}
